**************************************************************** MICROSOFT SQL SERVER STEROWNIK ODBC DLA PROGRAMU MICROSOFT SQL SERVER PLIK README INSTALATORA, WERSJA 3.7 **************************************************************** W pliku opisano użycie sterownika ODBC Microsoft SQL Server w wersji 3.7 z programem Microsoft SQL Server w wersji 6.5 lub wcześniejszej. Ponieważ sterownik ODBC dla programu Microsoft SQL Server w wersji 3.7 jest dostarczany z programem SQL Server 7.0. Użytkownicy programu SQL Server 7.0 powinni odwołać się do dokumentacji programu SQL Server 7.0 a nie do tego pliku Readme. Zostały omówione następujące tematy: 1. Przegląd 2. Instalowanie pliku Instcat.sql na serwerze 3. Uzyskiwanie bibliotek sieciowych klienta 4. Źródła dokumentacji dotyczące używania sterownika ODBC z serwerem SQL Server 5. Używanie sterownika w środowisku programistycznym 6. Zagadnienia zgodności **************************************************************** 1. Przegląd Sterownik ODBC dla programu Microsoft SQL Server w wersji 3.7, jest sterownikiem Win32ODBC wersji 3.51. Może być wykorzystywany w aplikacjach napisanych zarówno dla interfejsów API ODBC 2.X, jak i ODBC 3.X. Sterownik pracuje z programem Microsoft SQL Server w wersji 4.21a lub nowszej. Sterownik działa w systemach Windows 98, Windows 95 lub Windows NT (w wersji 4.0 lub nowszej). Wraz z wersją 3.7 sterownika ODBC SQL Server jest także instalowane narzędzie Win32 SQL Server 7.0 Client Network. Narzędzie to może być wykorzystywane z programem Microsoft SQL Server w wersji 4.21a lub nowszej i bibliotekami sieciowymi klienta dostarczanymi z tą wersją programu SQL Server. **************************************************************** 2. Instalowanie pliku Instcat.sql na serwerze Sterownik ODBC SQL Server używa zestawu procedur przechowywanych, znanych jako procedury przechowywane katalogów, aby uzyskać informacje z katalogu systemowego serwera SQL. Każda wersja sterownika ODBC SQL Server jest zaprojektowana do pracy z określoną wersją procedur przechowywanych katalogów. Plik Instcat.sql, znajdujący się w wersji 3.7 sterownika ODBC programu SQL Server, zawiera aktualizacje pomocnicze dla procedur przechowywanych katalogów aktualizujące procedury do wersji używanej przez ten sterownik. Plik Instcat.sql dostarczony ze sterownikiem ODBC dla programu SQL Server w wersji 3.7 jest taki sam jak plik Instcat.sql dostarczany wraz z programem SQL Server 7.0. Witryny programu SQL Server 7.0 nie wymagają uruchamiania pliku Instcat.sql. Administrator systemu SQL Server musi użyć skryptu Instcat.sql do uaktualnienia procedur przechowywanych katalogów, aby zapewnić poprawne działanie sterownika. Uaktualnienie procedur przechowywanych katalogów nie ma wpływu na działanie starszych klientów serwera SQL. Musi to być wykonane dla wszystkich wersji programu Microsoft SQL Server, od 4.21a do 6.5. Uaktualnienie nie jest potrzebne, jeśli wykorzystywany jest program SQL Server 7.0. Aby uaktualnić procedury przechowywane katalogów w programach SQL Server 4.21a, 6.0 lub 6.5, administrator systemu uruchamia skrypt używając narzędzia isql (zobacz instrukcje poniżej). Przed dokonaniem jakichkolwiek zmian w głównej bazie danych, administrator systemu powinien wykonać jej kopię. Aby uruchomić narzędzie isql, komputer musi pracować jako stacja robocza klienta dla serwera SQL Server. W wierszu polecenia użyj narzędzia isql, aby uruchomić skrypt Instcat.sql. Na przykład: C:>ISQL /Uas /hasło_as /Snazwa_serwera /ilokalizacja\Instcat.Sql gdzie hasło_as Jest hasłem administratora systemu. nazwa_serwera Jest nazwą komputera serwera, na którym działa program serwer SQL Server. lokalizacja Jest pełną ścieżką dostępu do lokalizacją pliku Instcat.Sql. Skrypt Instcat.sql generuje wiele komunikatów. Większość z nich wskazuje, ile wierszy zostało zmodyfikowanych przez instrukcje transakcyjne SQL wydawane przez skrypt. Większość z tych komunikatów można zignorować, jednak trzeba sprawdzić, czy nie ma wśród nich komunikatów wskazujących błędy wykonania. Gdy skrypt Instcat.sql jest uruchamiany przy użyciu programu SQL w wersji 6.0 Server, komunikat, że obiekt sp_MS_upd_sysobj_category nie istnieje, może być zignorowany. Ostatni komunikat powinien wskazywać na pomyślne zakończenie działania skryptu Instcat.sql. Wykonanie skryptu Instcat.sql nie powiedzie się, jeśli nie będzie wystarczająco dużo miejsca w głównej bazie danych, aby zmagazynować procedury przechowywane katalogów lub zarejestrować zmiany w istniejących procedurach. **************************************************************** 3. Uzyskiwanie bibliotek sieciowych klienta Sterownik ODBC dla programu SQL Server korzysta z bibliotek sieciowych klienta SQL Server do komunikowania się z serwerem. Sterownik ODBC SQL Server w wersji 3.7 używa także narzędzia konfiguracyjnego SQL Server Client Configuration do zarządzania bibliotekami sieciowymi związanymi ze źródłem danych ODBC. Sterownik ODBC SQL Server w wersji 3.7 instaluje tylko jedną bibliotekę sieciową, bibliotekę sieciowa nazwanego potoku Win32 Dbnmpntw.dll. Można używać sterownika ODBC SQL Server w wersji 3.7 ze starszymi wersjami bibliotek sieciowych Win32. Jeśli potrzebna jest inna biblioteka sieciowa niż nazwany potok, do połączenia się z serwerem SQL Server można użyć bibliotek sieciowych, które były dołączone do używanej wersji programu SQL Server. Biblioteki sieciowe programu SQL Server można uzyskać przez instalację narzędzi klienta Win32 SQL Server Client dla tej wersji programu SQL Server. Wersja narzędzia konfiguracyjnego SQL Server Client Network instalowana ze sterownikiem ODBC SQL Server wersji 3.7 może być używana z bibliotekami sieciowymi klienta z wersji 4.12a lub nowszej programu SQL Server. **************************************************************** 4. Źródła dokumentacji dotyczące używania sterownika ODBC z serwerem SQL Server Sterownik ODBC Microsoft SQL Server w wersji 3.7 jest tym samym sterownikiem który dostarczany jest wraz z programem SQL Server 7.0. Użytkownicy programu SQL Server 7.0 mogą odwołać się do dokumentacji programu SQL Server 7.0 dla sterownika ODBC programu SQL Serwer w wersji 3.7. Gdy sterownik ODBC Microsoft SQL Server w wersji 3.7 używany jest z programem SQL Server (wersja 4.21a, 6.0 lub 6.5), sterownik pracuje w taki sam sposób jak starsze sterowniki. Można użyć informacji specyficznych dla tych wersji programu SQL Server zawartych w: * Pliku pomocy drvssrvr.hlp dostarczonym z poprzednia wersja programu SQL Server. * Rozdziale "Programming ODBC for Microsoft SQL Server" podręcznika programu SQL Server 6.5. * Dokumencie "Programming ODBC for Microsoft SQL Server" dostępnym w pakiecie MSDN. Sterownik ODBC dla programu Microsoft SQL Server w wersji 3.7 jest także zgodny z kluczowymi dla sterownika informacjami zawartymi w notatce technicznej "Using ODBC with Microsoft SQL Server" dostępnej w pakiecie MSDN. Plik pomocy Sqlsodbc.hlp dołączony do sterownika ODBC SQL Server zawiera tylko częściową pomoc kontekstową dla kreatora źródła danych SQL Server ODBC. Plik pomocy Drvssrvr.hlp dołączony do poprzednich wersji sterownika ODBC Microsoft SQL Server zawiera kluczowe dla sterownika informacje dotyczące starszych wersji sterownika. Informacje zawarte w starszych wersjach pliku Drvssrvr.hlp są także zamieszczone w podręczniku dotyczącym serwera SQL Server 6.5 "Programming ODBC for Microsoft SQL Server". **************************************************************** 5. Używanie sterownika w środowisku programistycznym Sterownik ODBC Microsoft SQL Server używa kluczowych dla sterownika parametrów do kilku wywołań funkcji ODBC. Definicje #defines dla tych specyficznych dla sterownika parametrów i struktury programistyczne C i C++ zawarte są w dołączonym pliku Odbcss.h. Sterownik ODBC SQL Server w wersji 3.7 pracuje z plikiem Odbss.h znajdującym się w następujących źródłach: * Program SQL Server 7.0 * Dodatek SQL Server Service Pack 2 (SP2) lub późniejszy dla programu SQL Server 6.5 * Pakiet MDAC SDK Pakiet MDAC SDK jest częścią wersji profesjonalnej pakietu Microsoft Developer Network. Pakiet SDK można także pobrać z witryny sieci Web firmy Microsoft pod adresem www.microsoft.com/data. Pakiet SDK jest także dostępny w publikacji wydawnictwa Microsoft Press "Microsoft ODBC 3.0 Software Development Kit and Programmer's Reference". **************************************************************** 6. Zagadnienia zgodności Począwszy od sterownika ODBC w wersji 3.7 dostarczonej wraz z programem SQL Server 7.0, użytkownicy programu SQL Server 7.0 powinni odwoływać się do dokumentacji dotyczącej ODBC w programie SQL Server 7.0. Zagadnienia zgodności udokumentowane w tym paragrafie mają zastosowanie tylko wtedy, gdy sterownik ten używany jest z wcześniejszymi wersjami programu SQL Server (4.21a, 6.0 lub 6.5). Sterownik ODBC SQL Server w wersji 3.7 wyświetla nowego kreatora podczas dodawania lub konfigurowania źródeł danych zarówno w narzędziu ODBC Administrator, jak i gdy aplikacja wywołuje polecenie SQLConfigDataSource i prosi sterownik, aby monitował użytkownika w celu uzyskania informacji. Kliknij przycisk Pomoc w kreatorze, aby uzyskać dostęp do dokumentacji kreatora. W sterowniku ODBC SQL Server w wersji 2.65 dostarczanym z serwerem SQL Server 6.5, parametr SQL_COPT_SS_PERF_QUERY_INTERVAL podawany jest w sekundach, a nie w milisekundach, jak opisuje dokumentacja (zobacz artykuł Q157753 w Bazie wiedzy). W wersji 3.7 sterownika SQL Server ODBC, parametr SQL_COPT_SS_PERF_QUERY_INTERVAL został zmieniony i podawany jest w milisekundach zgodnie z dokumentacją. Następujące zmiany mają wpływ tylko na aplikacje napisane przy użyciu interfejsu ODBC 3.X API. Nie mają one wpływu na aplikacje napisane przy użyciu interfejsu ODBC 2.X API. Zmiany te nie powinny wpływać na zestaw wyników w większości aplikacji ODBC. W poprzednich wersjach sterownika ODBC SQL Server sąsiadujące ze sobą instrukcje PRINT lub RAISERROR w plikach wsadowych lub procedurach przechowywanych zwracały komunikaty razem, w jednym zestawie wyników. W sterowniku ODBC SQL Server w wersji 3.7 komunikaty dla każdej z instrukcji SQL zwracane są w odrębnych zestawach wyników. Musisz wywołać funkcję SQLMoreResults pomiędzy każdym z komunikatów, aby ustawić się na komunikaty następnej instrukcji SQL. Wszystkie komunikaty z pojedynczej instrukcji SQL, takiej jak instrukcja DBCC, zwracane są w jednym zestawie wyników i nie ma potrzeby wywoływania funkcji SQLMoreResults pomiędzy każdym z komunikatów. W poprzednich wersjach sterownika ODBC SQL Server błąd wykonania lub błąd RAISERROR z wagą błędu 11 lub wyższą w pierwszej instrukcji w pliku wsadowym lub procedurze przechowywanej zawsze powodował, że funkcje SQLExecute, SQLExecDirect lub SQLParamData zwracały SQL_ERROR. W wersji 3.7 sterownika ODBC SQL Server funkcje SQLExecute, SQLExecDirect lub SQLParamData zwracają SQL_ERROR, tylko jeśli nie jest wykonywana żadna instrukcja po pierwszej instrukcji. Jeśli inna instrukcja wykonywana jest po pierwszej, nawet prosta instrukcja RETURN bez wartości zwracanej, wtedy funkcje SQLExecute lub SQLExecDirect zwracają komunikat SQL_SUCCESS_WITH_INFO. Po przetworzeniu komunikatu SQL_SUCCESS_WITH_INFO przy użyciu funkcji SQLGetDiagRec, trzeba wywołać funkcję SQLMoreResults, aby ustawić się na następnym zestawie wyników. Podczas gdy poprzednie wersje sterownika napotykały błąd w pierwszej instrukcji w pliku wsadowym lub procedurze przechowywanej, dojście do instrukcji było dostępne dla użycia z inną instrukcją SQL, po tym jak funkcja SQLExecute lub SQLExecDirect zwróciła komunikat SQL_ERROR. Gdy sterownik w wersji 3.7 zwraca komunikat SQL_SUCCESS_WITH_INFO, instrukcja nie jest zwalniana do wykonania następnej instrukcji SQL, dopóki funkcja SQLMoreResults nie zwróci komunikatu SQL_NO_DATA lub dopóki nie zostaną zamknięte wszystkie zestawy wyników następujące po instrukcji RAISERROR. Jeśli po komunikacie o błędzie nie ma zestawów wyników, funkcja SQLCloseCursor nie może zostać wywołana; funkcja SQLFreeStmt(SQL_CLOSE) lub SQLMoreResults musi zostać wywołana, aby zwolnić dojście do instrukcji w celu wykonania następnej instrukcji SQL: CREATE PROCEDURE TestPrc @Param1 as IF (@Parm1 IS NULL) BEGIN RAISERROR ('Param1 nie może mieć wartości NULL', 11, 1) RETURN END SELECT * FROM sysusers WHERE suid = @Param1 GO Wykonaj następujące polecenie: SQLExecDirect(hstmt, "{ call TestPrc (NULL) }", SQL_NTS); Gdy używana jest starsza wersja sterownika SQL Server ODBC lub jeśli aplikacja używa interfejsu ODBC 2.X API, wtedy funkcja SQLExecDirect zwraca SQL_ERROR. Po zwróceniu przez funkcję SQLGetDiagRec komunikatu SQL_NO_DATA lub SQL_NO_DATA_FOUND przez funkcję SQLError, dojście do instrukcji jest zwalniane do wykonania innej instrukcji SQL. Gdy używany jest sterownik ODBC SQL Server w wersji 3.7 z aplikacji napisanej dla interfejsu ODBC 3.X API, funkcja SQLExecDirect zwraca komunikat SQL_SUCCESS_WITH_INFO. Po zwróceniu przez funkcję SQLGetDiagRec wartości SQL_NO_DATA, dojście do instrukcji nie może być użyte do wykonania innej instrukcji SQL, dopóki funkcja SQLMoreResults nie zwróci informacji SQL_NO_DATA lub nie zostanie wywołana funkcja SQLFreeStmt(SQL_CLOSE). W poprzednich wersjach sterownika SQL Server ODBC, funkcje SQLExecute, SQLExecDirect lub SQLParamData zwracają SQL_SUCCESS, gdy jakaś aplikacja wykonuje instrukcję wyszukującą UPDATE lub DELETE, nie mającą wpływu na wiersze. Z tego względu wersja 3.7 sterownika nadal zwraca komunikat SQL_SUCCESS do aplikacji napisanych dla interfejsu ODBC 2.X API, ale także zwraca komunikat SQL_NO_DATA do aplikacji napisanych dla interfejsu ODBC 3.X API. Jeśli zarówno aplikacja interfejsu ODBC 2.X, która otrzyma komunikat SQL_SUCCESS, jak i aplikacja interfejsu ODBC 3.X, która otrzyma komunikat SQL_NO_DATA, następnie wywołuje funkcję SQLRowCount, funkcja SQLRowCount zwróci wartość licznika równą zeru. Sterownik ODBC 3.X wyraźniej definiuje sposób zwracania wyników niż sterownik ODBC 2.X. Wcześniejsze wersje sterownika SQL Server ODBC zwracały wartości parametrów wyjściowych i kody powrotu, gdy funkcje sterownika ODBC 2.X SQLFetch lub SQLExtendedFetch, zwróciły komunikat SQL_NO_DATA w ostatnim zestawie wyników zwróconym przez procedurę przechowywaną. Sterownik ODBC dla programu SQL Server w wersji 3.7 zachowuje tę cechę, gdy jest wywoływany przez aplikację ODBC 2.X. Gdy wywoływany jest sterownik ODBC dla programu SQL Server w wersji 3.7 przez aplikacje ODBC 3.X, to sterownik nie zwraca parametrów wyjściowych lub kodów powrotu, dopóki funkcja SQLMoreResults nie zwróci komunikatu SQL_NO_DATA. ****************************************************************